The present invention relates to the field of integrated circuits, their manufacture, and use. More specifically, in one embodiment the invention provides an improved method and device for ensuring that an integrated circuit is compatible with a configuration program. The invention has application to an array of integrated circuits such as programmable logic devices, otherwise referred to as PLDs, PALs, PLAs, FPLAs, EPLDs, EEPLDs, LCAs, and FPGAs.
Many types of integrated circuits are programmed by an external device such as a computer. As such integrated circuits are modified, updated, and improved, they undergo various revisions. At the same time, it sometimes becomes necessary to make revisions to the external programming device to accommodate changes in the integrated circuit and to otherwise improve the programming device. Such changes are often accomplished through revisions in the software of the external programming device.
As the software and integrated circuits undergo various revisions, it is necessary to "keep track" of the revisions such that it is possible to ensure that a particular revision of the software is compatible with a particular revision of the integrated circuit. This has often presented a difficult problem.
Various solutions have been proposed to accomplish this task. For example, certain programmable logic devices have applied a predetermined signal to one or more pins on the programmable logic device, and this signal causes the device to generate an ID code as a binary signal along one or more separate pins on the device. This binary code is generated by way of a ROM field on the chip, and is read by the programming device and its associated software. Depending upon the value of the binary code, the programming software may utilize a different programming algorithm to program the device.
While meeting with substantial success, prior techniques for managing revisions of integrated circuits and their programming software have also met with significant limitations. For example, when the software and the integrated circuit are incompatible, the programming effort will fail, but it is often difficult to determine why the failure has occurred. This problem arises because the output of the integrated circuit indicates which revision of the code to use, but if the code does not have that particular revision available, there is often an unidentifiable failure. Therefore, the user may not be aware that the failure arose due to incompatibility of the software and the integrated circuit. Moreover, the programmer of the software has limited control over upward and downward compatibility of the various revisions of the software.
Some types of integrated circuits have programming elements made of SRAM. The programming process of physically loading the SRAM data into the integrated circuit is called "configuration." The configuration data sometimes is stored in a "dumb" memory device, such as a low-cost EPROM, when the system does not equip a host computer as an intelligent programming controller. Usually it is advantageous to have the device configuration occur automatically at system power-up. In this case, during power-up, the EPROM device starts "blindly" sending data to the SRAM-based IC, and it is the responsibility of the device to be configured (i.e., the SRAM-based device) to determine the program compatibility. Prior techniques did not work well when a system lacked a host computer for intelligent control, and the programming device was so "dumb" that a hand-shaking with the device being programmed did not exist. This invention also provides a means to recognize a program compatibility for in-circuit or on-board configuration (with or without a host computer).
From the above it is seen that an improved method and system for program/integrated circuit compatibility is needed.